package com.linq.cool.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linq.cool.system.domain.SysPost;
import com.linq.cool.system.dto.SysPostQueryDTO;

import java.util.List;

/**
 * @Author: yqlin
 * @Date: 2020/12/29 15:29
 * @Description:
 * @Version: 1.0.0
 */
public interface SysPostService extends IService<SysPost> {

    /**
     * 查询岗位信息集合
     *
     * @param page 分页参数
     * @param dto  条件查询对象，post
     *
     * @return IPage<SysPost>
     */
    IPage<SysPost> listByPage(IPage<SysPost> page, SysPostQueryDTO dto);

    /**
     * 校验岗位名称
     *
     * @param post 岗位信息
     *
     * @return 结果
     */
    boolean checkNameUnique(SysPost post);

    /**
     * 校验岗位编码
     *
     * @param post 岗位信息
     *
     * @return 结果
     */
    boolean checkCodeUnique(SysPost post);

    /**
     * 批量删除岗位信息
     *
     * @param postIds 需要删除的岗位ID
     *
     * @return 结果
     */
    boolean deleteByIds(List<Long> postIds);

    /**
     * 根据用户ID获取岗位选择框列表
     *
     * @param userId 用户ID
     *
     * @return 选中岗位ID列表
     */
    List<Long> listByUserId(Long userId);

    /**
     * 根据条件查询岗位信息集合
     *
     * @param post 岗位信息
     *
     * @return 岗位信息集合
     */
    List<SysPost> listByParams(SysPost post);

    /**
     * 保存岗位信息
     *
     * @param post 岗位信息
     *
     * @return 结果
     */
    boolean savePost(SysPost post);

    /**
     * 更新岗位信息
     *
     * @param post 岗位信息
     *
     * @return 结果
     */
    boolean updatePost(SysPost post);

    /**
     * 查询用户所属岗位组
     *
     * @param userId 用户id
     *
     * @return 结果
     */
    List<SysPost> listPostsByUserId(Long userId);
}
